package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


/**
 * java.util.List 接口
 *
 * List可以存放重复元素且有序,该接口上定义了一套List集合都具备的根据下标操作元素的方法
 *
 * 常用实现类:
 * java.util.ArrayList:内部使用数组实现,查询性能更好
 * java.util.LinkedList:内部使用链表实现,增删性能更好(首尾增删元素性能最佳)
 * 对于性能没有特别苛刻要求时,通常使用ArrayList即可.
 */
public class LIstDemo1 {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();//创建一个List集合

        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        /*
        E get(int index)
        获取指定下标对应的元素
         */
        //获取List集合中的第三个元素
        String e=list.get(2);
        System.out.println(e);
        //list集合可以使用普通的for循环遍历
        for (int i = 0; i <list.size() ; i++) {
            e=list.get(i);//遍历每一个集合
            System.out.println(e);
        }

        /*
        E set(int index,E e)
        将给定元素设置到指定位置上,并且将替换下来的元素返回
        可以理解为替换
        可以接受返回值,也可以不接受
         */
        //list.set(2,"666")
        String old=list.set(2,"666");
        System.out.println(list);
        System.out.println(old);



        System.out.println(list.size());
        for (int i = 0; i <list.size()/2 ; i++) {
            //获取正数位置上的元素
            String s=list.get(i);
            s=list.set(list.size()-i-1,s);//最后一个数
            //将倒数位置的元素设置到正数位置上
            list.set(i,s);
        }
        System.out.println(list);
        Collections.reverse(list);

    }
}
